home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #1 / Ham Radio 2000.iso / ham2000 / packet / p_aa4re / mbb35src / qrqpini.asm < prev    next >
Encoding:
Assembly Source File  |  1988-07-24  |  3.0 KB  |  58 lines

  1. ;==========================================================================;
  2. ; QuadRam QuadPort Initialization                                          ;
  3. ;                                                                          ;
  4. ;   The 8250 code is also used!!!                                          ;
  5. ;                                                                          ;
  6. ;   Copyright 1987, 1988 by H. Roy Engehausen.  All rights reserved.       ;
  7. ;   This software may be freely distributed and used, but it may not       ;
  8. ;   under any circumstances be sold by anyone other than the author.       ;
  9. ;   It may be distributed by a commercial company as long as it is         ;
  10. ;   for no cost.                                                           ;
  11. ;                                                                          ;
  12. ;   Permission is explicity granted to use this code as a model for        ;
  13. ;   other programs requiring interupt driven serial I/O as long as they    ;
  14. ;   carry this copyright notice.                                           ;
  15. ;==========================================================================;
  16.  
  17.         CMP     chip[SI],chip_qrqp  ; Is this a QuadRam QuadPort?
  18.         JNE     init_not_qrqp       ;      Nope:  skip this
  19.  
  20. ;--------------------------------------------------------------------------;
  21. ; If this is not the first port on this interrupt vector, skip this        ;
  22. ;--------------------------------------------------------------------------;
  23.  
  24.         CMP     old_interrupt_vec_seg[DI],0 ; Is this the first intr handler?
  25.         JE      init_not_qrqp       ;      Nope:  skip this
  26.  
  27. ;--------------------------------------------------------------------------;
  28. ; Set the Master interrupt register                                        ;
  29. ;--------------------------------------------------------------------------;
  30.  
  31.         MOV     DX,baseaddr[SI]     ; Get the base port address
  32.         AND     DL,basem_qrqp       ; Now get the board base address
  33.         ADD     DX,qintr_qrpt       ; Point to master interrupt register
  34.  
  35.         XOR     AL,AL               ;
  36.         OUT     DX,AL               ; Output a zero first
  37.  
  38.         MOV     AL,hiv[SI]          ; Get the hardware interrupt vector number
  39.  
  40.         CMP     AL,irq2_offset      ; Convert it to the IRQ number
  41.         JL      qrqp_init_low       ;
  42.         SUB     AL,irq2_offset-8    ;
  43.         JMP     SHORT qrqp_init_done;
  44. qrqp_init_low:
  45.         SUB     AL,irq_offset       ;
  46. qrqp_init_done:
  47.  
  48.         CBW                         ;
  49.         MOV     BX,AX               ; Make into an index
  50.         MOV     AL,qrqp_int_map[BX] ; Get the proper setting for the vector
  51.         OUT     DX,AL               ; And send it
  52.  
  53. ;--------------------------------------------------------------------------;
  54. ; Done                                                                     ;
  55. ;--------------------------------------------------------------------------;
  56.  
  57. init_not_qrqp:                      ; Not QRQP come here!
  58.